let utils = data.utils,
  STUtil = data.STUtil,
  Node = data.Node,
  SplayTree = data.SplayTree,
  isInBbox = data.isInBbox,
  getBboxOverlap = data.getBboxOverlap,
  cmp = data.cmp,
  rounder = data.rounder,
  geomIn = data.geomIn,
  geomOut = data.geomOut,
  operation = data.operation,
  Segment = data.Segment,
  SweepEvent = data.SweepEvent,
  SweepLine = data.SweepLine,
  polygonClipping = data.polygonClipping,
  DynamicLabel = data.DynamicLabel;
console.log("16DynamicLabel02_1");
utils.extend(DynamicLabel.prototype, { coordEach: function (geojson, callback, excludeWrapCoord) { if (null !== geojson) for (var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = "FeatureCollection" === type, isFeature = "Feature" === type, stop = isFeatureCollection ? geojson.features.length : 1, featureIndex = 0; featureIndex < stop; featureIndex++) { stopG = (isGeometryCollection = !!(geometryMaybeCollection = isFeatureCollection ? geojson.features[featureIndex].geometry : isFeature ? geojson.geometry : geojson) && "GeometryCollection" === geometryMaybeCollection.type) ? geometryMaybeCollection.geometries.length : 1; for (var geomIndex = 0; geomIndex < stopG; geomIndex++) { var multiFeatureIndex = 0, geometryIndex = 0; if (null !== (geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection)) { coords = geometry.coordinates; var geomType = geometry.type; switch (wrapShrink = !excludeWrapCoord || "Polygon" !== geomType && "MultiPolygon" !== geomType ? 0 : 1, geomType) { case null: break; case "Point": if (!1 === callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex)) return !1; coordIndex++ , multiFeatureIndex++; break; case "LineString": case "MultiPoint": for (j = 0; j < coords.length; j++) { if (!1 === callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex)) return !1; coordIndex++ , "MultiPoint" === geomType && multiFeatureIndex++ } "LineString" === geomType && multiFeatureIndex++; break; case "Polygon": case "MultiLineString": for (j = 0; j < coords.length; j++) { for (k = 0; k < coords[j].length - wrapShrink; k++) { if (!1 === callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex)) return !1; coordIndex++ } "MultiLineString" === geomType && multiFeatureIndex++ , "Polygon" === geomType && geometryIndex++ } "Polygon" === geomType && multiFeatureIndex++; break; case "MultiPolygon": for (j = 0; j < coords.length; j++) { for (geometryIndex = 0, k = 0; k < coords[j].length; k++) { for (l = 0; l < coords[j][k].length - wrapShrink; l++) { if (!1 === callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex)) return !1; coordIndex++ } geometryIndex++ } multiFeatureIndex++ } break; case "GeometryCollection": for (j = 0; j < geometry.geometries.length; j++)if (!1 === this.coordEach(geometry.geometries[j], callback, excludeWrapCoord)) return !1; break; default: throw new Error("Unknown Geometry Type") } } } } } });


return {
  "utils": utils,
  "STUtil": STUtil,
  "Node": Node,
  "SplayTree": SplayTree,
  "isInBbox": isInBbox,
  "getBboxOverlap": getBboxOverlap,
  "cmp": cmp,
  "rounder": rounder,
  "geomIn": geomIn,
  "geomOut": geomOut,
  "operation": operation,
  "Segment": Segment,
  "SweepEvent": SweepEvent,
  "SweepLine": SweepLine,
  "polygonClipping": polygonClipping,
  "DynamicLabel": DynamicLabel
}